﻿using System.ComponentModel;
using System.Xml;

namespace MassIntellect.WorkIt.Frames
{
	public class Iterator : WorkFrame
	{
		public Iterator()
		{
			IsActive = true;
		}

		private long Counter;

		[Serialize]
		[Browsable(true)]
		[Description("Количество генерируемых сигналов. Если счетчик будет <= 0, то итератор автоматически деактивируется.")]
		[DefaultValue(0)]
		[Category("Итератор")]
		public int Count { get; set; }

		[Serialize]
		[Browsable(true)]
		[Description("Признак бесконечной генерации.")]
		[DefaultValue(false)]
		[Category("Итератор")]
		public bool IsInfinity { get; set; }

		public override void Activate()
		{
			if (IsEnabled && IsInfinity || Count-- > 0)
			{
				Echo("Итерация {0}", ++Counter);
				base.Activate();
			}
			else
				IsActive = false;
		}

		[Serialize(SerializeAs.Attribute)]
		[Browsable(true)]
		[Description("Активность генератора. Активированный генератор будет автоматически отсылать нулевой сигнал заданное количество раз, после чего автоматически деактивируется.")]
		[DefaultValue(true)]
		[Category("Итератор")]
		public override bool IsActive
		{
			get
			{
				return base.IsActive;
			}
			set
			{
				base.IsActive = value;
			}
		}
	}
}
